﻿using Future.Common.Models;
using Future.Model.DtoModel;
using Future.Model.SysModel;

namespace Future.IBLL
{
    /// <summary>
    /// 描述：角色业务接口
    /// 创建人： yangkai
    /// 创建时间：2022/12/5 16:38:00
    /// </summary>
    public interface IRoleBLL
    {
        /// <summary>
        /// 添加角色包含菜单
        /// </summary>
        /// <param name="roleDto"></param>
        /// <returns></returns>
        bool AddRoleInfo(RoleInfoDto roleDto);

        /// <summary>
        /// 批量授权用户
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="userIds"></param>
        /// <returns></returns>
        bool AuthUserList(Guid roleId, List<Guid> userIds);

        /// <summary>
        /// 批量取消授权
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="userIds"></param>
        /// <returns></returns>
        bool CancelAuthUserList(Guid roleId, List<Guid> userIds);

        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        bool DeleteByIds(List<Guid> ids);

        /// <summary>
        /// 根据Id获取角色
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        RoleModel GetById(Guid id);

        /// <summary>
        /// 获取角色列表
        /// </summary>
        /// <returns></returns>
        List<RoleModel> GetList();

        /// <summary>
        /// 分页获取角色信息列表
        /// </summary>
        /// <param name="roleQueryDto"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        PageModel<RoleModel> SelctPageList(RoleQueryDto roleQueryDto, PageParModel page);

        /// <summary>
        /// 更新角色信息
        /// </summary>
        /// <param name="roleDto"></param>
        /// <returns></returns>
        bool UpdateInfo(RoleInfoDto roleDto);

        /// <summary>
        /// 更改角色状态
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        bool UpdateStatus(Guid roleId, bool status);
    }
}
